% Ejercicio "26 variables"
\subsection*{\fbox{\theejercicio} - 26 variables}

Se desea escribir un programa, utilizando LEX y YACC, que tiene como entrada un fichero que contiene expresiones de asignaci\'on y expresiones que utilizan operadores relacionales. S\'olo se puede utilizar, como nombre de variables o identificadores una letra min\'uscula del alfabeto ingl\'es (es decir, s\'olo podr\'a haber 26 variables distintas). Los valores que se les pueden asignar son n\'umeros reales sin parte exponencial. Los operadores relacionales que se pueden utilizar son $<$, $>$, $<=$, $>=$, $==$, $!=$. El operador de asignaci\'on es $=$. Cada expresi\'on est\'a en una l\'{\i}nea diferente. Un ejemplo de fichero de entrada podr\'{\i}a ser el siguiente:

\begin{center}
\begin{tabular}{|l|} \hline
                  \\
\verb@x = 4.3@    \\
\verb@x < 5.0@    \\
\verb@y = 9.6@    \\
\verb@x != y@     \\
\verb@2.0 == 5.0@ \\
\verb@z <= 7.2@   \\
                  \\ \hline
\end{tabular}
\end{center}

La salida que se quiere obtener es, en funci\'on del tipo de expresi\'on que haya en la l\'{\i}nea, la siguiente: para expresiones de asignaci\'on, indicar el valor que se ha asignado a la variable; para expresiones con operadores relacionales, indicar si es verdadera o falsa; y en caso de que una expresi\'on no pueda evaluarse la causa de este error. As\'{\i}, por ejemplo, para el fichero de entrada anterior, la salida deber\'{\i}a ser:

\begin{center}
\begin{tabular}{|l|} \hline
                                       \\
{\tt La variable x toma el valor 4.3}  \\
{\tt Esta expresi\'on es Verdadera}    \\
{\tt La variable y toma el valor 9.6}  \\
{\tt Esta expresi\'on es Verdadera}    \\
{\tt Esta expresi\'on es Falsa}        \\
{\tt La variable z no est\'a definida} \\
                                       \\ \hline
\end{tabular}
\end{center}

Cuando se utilice una variable en una expresi\'on con operadores relacionales deber\'a comprobarse que se le ha
asignado previamente un valor.

\smallskip

Se pide:

\begin{enumerate}[1)]
\item Escribir el analizador lexicogr\'afico utilizando LEX.
\item Escribir el analizador sint\'actico que produzca la salida especificada, utilizando YACC; esto incluye: definir los
distintos tokens, la gram\'atica del analizador sint\'actico y las acciones semanticas correspondientes.
\end{enumerate}

NOTA: Para la implementaci\'on de las variables se debe utilizar una variable global de tipo array de tama\~no 26, de acuerdo a la siguiente declaraci\'on:

\begin{center}
\fbox{{\tt float tabla[26]}}
\end{center}

La primera posici\'on del array corresponde con la letra `a', la segunda `b', etc.

% Solución del ejercicio
\subsubsection*{SOLUCI\'ON}

